
package DAO;

import Entidad.Administrador;
import Singletons.Mensajes;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Query;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.NonUniqueResultException;
import javax.persistence.PersistenceException;

/**
 *
 * @author Jhovany Amaya
 */
public class AdministradorDAO {

    public void crear(Administrador object,EntityManager em)throws Exception {
        try {
            em.merge(object);
        }catch(Exception e){
            throw new PersistenceException(Mensajes.ERROR_CONEXION_BD);
        }
        
    }

    public Administrador encontrar(Long cedula,EntityManager em) throws NoResultException,PersistenceException {
        Administrador administrador;
        administrador=em.find(Administrador.class, cedula);
        return administrador;
    }

    public void actualizar(Administrador nuevo,EntityManager em) throws PersistenceException,Exception {
        em.merge(nuevo);       
    }

    public ArrayList<Administrador> listaActual(EntityManager em) throws PersistenceException {
        ArrayList<Administrador> lista=new ArrayList<Administrador>();
        try{
            Query consulta = em.createQuery("SELECT u FROM Administrador u");
            List listaAdmin=consulta.getResultList();
            for(Object a:listaAdmin)
                lista.add((Administrador)a);
        }catch(NoResultException e){
            lista=new ArrayList<Administrador>();
        }catch(Exception e){
            throw new PersistenceException(Mensajes.ERROR_CONEXION_BD);
        }
        return lista;
    }

    public Administrador encontrarpornombre(String nombre,EntityManager em) throws NonUniqueResultException,PersistenceException {
        Administrador administrador;
        Query query=em.createQuery("SELECT a FROM Administrador a WHERE a.nombre = :NOMBRE").setParameter("NOMBRE", nombre);
        administrador=(Administrador)query.getSingleResult();
        return administrador;
    }

    public void borrar(long id,EntityManager em)throws PersistenceException,Exception {
        Administrador emp = em.find(Administrador.class, id);
        em.remove(emp);
    }

}